<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>md/test.md</title>
    <link rel="stylesheet" href="css/style.css"/>
    <link rel="stylesheet" href="css/editormd.preview.css"/>
    <link rel="shortcut icon" href="https://pandao.github.io/editor.md/favicon.ico" type="image/x-icon"/>
    <style>
        .editormd-html-preview {
            width: 90%;
            margin: 0 auto;
        }
    </style>
</head>
<body>
<div id="layout">
    <header>
        <h1>md/test.md</h1>
    </header>
    <div id="test-editormd-view">
        <textarea id="append-test" style="display:none;">
[TOC]
## docker常用命令
```shell
#查看容器的详细信息
docker  inspect  [容器名]

#在容器中执行一个命令
docker exec [容器名]  [命令]
例: docker exec -it [容器名]  /bin/bash

#启动存在的容器
docker start [容器名]

#停止容器
docker stop [容器名]

#根据容器创建一个镜像
docker commit [容器名] [镜像名]
```

## docker提权启动容器(为了在容器中能够启动服务)
```shell
#使用一下命令启动docker容器
docker run --name=<容器名> --privileged -d <镜像名> sbin/init
#然后使用一下命令进入容器
docker exec -it <容器名> /bin/bash
```

## 容器中安装keepalived-坑
>**注意:**docker中安装keepalived以后，检查宿主机和容器的`ip_vs`模块是否被加载，如果没有加载，那么启动docker中的keepalived的时候会报错，会在根目录产生一堆的core文件

```shell
#用以下命令加载ip_vs模块
modprobe ip_vs
modprobe ip_vs_wrr
#用以下命令检察是否加载了ip_vs模块
lsmod | grep ip_vs   #（没有任何输出说明没有加载）
```
> **注意:**docker中安装keepalived，需要在docker容器中安装`ipvsadm`服务

```sequence
participant 客户端 as khd
participant 控制器 as kzq
participant 业务 as yw
participant 数据库 as sjq

khd -> kzq :提交数据店铺
kzq -> kzq :验证数据完整性
kzq --> khd :数据不完整
kzq -> yw :保存店铺到数据库
yw -> yw:保存店铺数据
yw -> kzq : 保存出现异常
kzq --> khd : 保存异常提示客户端
yw -> sjq : 保存成功
sjq --> yw : sdfasdf
yw --> kzq : success
kzq --> khd : success
note left of kzq :史蒂夫

```
</textarea>
    </div>
</div>
<script src="js/jquery.min.js"></script>
<script src="js/marked.min.js"></script>
<script src="js/prettify.min.js"></script>

<script src="js/raphael.min.js"></script>
<script src="js/underscore.min.js"></script>
<script src="js/sequence-diagram.min.js"></script>
<script src="js/flowchart.min.js"></script>
<script src="js/jquery.flowchart.min.js"></script>

<script src="js/editormd.min.js"></script>
<script type="text/javascript">
    $(function () {
        // $.post("test.md", function (markdown) {
        //
        //     editormd.markdownToHTML("test-editormd-view", {
        //         markdown: markdown,//+ "\r\n" + $("#append-test").text(),
        //         //htmlDecode      : true,       // 开启 HTML 标签解析，为了安全性，默认不开启
        //         htmlDecode: "style,script,iframe",  // you can filter tags decode
        //         //toc             : false,
        //         tocm: true,    // Using [TOCM]
        //         //tocContainer    : "#custom-toc-container", // 自定义 ToC 容器层
        //         //gfm             : false,
        //         //tocDropdown     : true,
        //         // markdownSourceCode : true, // 是否保留 Markdown 源码，即是否删除保存源码的 Textarea 标签
        //         emoji: true,
        //         taskList: true,
        //         tex: true,  // 默认不解析
        //         flowChart: true,  // 默认不解析
        //         sequenceDiagram: true,  // 默认不解析
        //     });
        //
        // });
        var markdown = $("#append-test").text();
        editormd.markdownToHTML("test-editormd-view", {
            markdown: markdown,//+ "\r\n" + $("#append-test").text(),
            //htmlDecode      : true,       // 开启 HTML 标签解析，为了安全性，默认不开启
            htmlDecode: "style,script,iframe",  // you can filter tags decode
            //toc             : false,
            tocm: true,    // Using [TOCM]
            //tocContainer    : "#custom-toc-container", // 自定义 ToC 容器层
            //gfm             : false,
            //tocDropdown     : true,
            // markdownSourceCode : true, // 是否保留 Markdown 源码，即是否删除保存源码的 Textarea 标签
            emoji: true,
            taskList: true,
            tex: true,  // 默认不解析
            flowChart: true,  // 默认不解析
            sequenceDiagram: true,  // 默认不解析
        });
    });
</script>
</body>
</html>

Process finished with exit code 0
